Hoppa till huvudinnehåll

Schemalagd MQTT-kontroll

tips

Det schemalagda MQTT-kontrollen är avsedd för schemalagda meddelanden i förväg. För livekontroll, se Live MQTT Control istället.

Denna guide hjälper dig att konfigurera MQTT på din SmartgridOne Controller för att fjärrstyra och övervaka installationer av batterier och solpaneler.

Vad du behöver

  1. SmartgridOne Controller med internetuppkoppling.
  2. MQTT-uppgifter: Detta kan begäras genom att skicka ett e-postmeddelande till support@eniris.be.
  3. Python-utvecklingsmiljö (eller någon annan MQTT-klient). Denna guide använder ett grundläggande exempel skrivet i Python för att komma igång med MQTT och skicka kommandon. Vi rekommenderar att använda Python för användarvänligheten, men vilken annan MQTT-klient som helst stöds.

Extra information

MQTT är ett snabbt kommunikationsprotokoll över internet. Det är ett publicera/prenumerera meddelandesystem som möjliggör en direktanslutning mellan din maskin och SmartgridOne Controller. Dina tillgångar klassificeras i sol-, batteri-, EV- och HVAC-grupper. För tillfället möjliggör denna integration kontroll per grupp, inte per enhet.

Första konfiguration (Startpunkt för nya användare)

Jag har en SmartgridOne Controller som jag vill konfigurera för MQTT Fjärrkontroll.

1. Kontrollera ditt nätverk

Se till att ditt nätverk tillåter mqtt-nätverkstrafik över port 1883. Du kan göra detta med kommandot:

nc -zv mqtt.eniris.be 1883

När detta kommando inte är tillgängligt kan du alternativt ladda ner och köra denna python-kod.

När du är osäker, konsultera din nätverksingenjör eller använd temporärt din telefons 4G/5G hotspot när anslutningsfel inträffar.

anteckning

När port 1883 inte är tillgänglig från ditt nätverk erbjuder vi en backup på port 80. Detta kan konfigureras i din MQTT-klient vid ett senare steg i denna manual.

2. Lägg till dina enheter

Logga in i commissioning-gränssnittet och se till att enheterna är tillagda till SmartgridOne Controller.

3. Lägg till MQTT extern signal

Bild 1
Bild 1
Bild 1

4. Aktivera MQTT fjärrsignal

Välj alla enheter som du vill inkludera i MQTT Fjärrkontroll.

Bild 1

5. Fjärrsignalen är tillagd

MQTT Fjärrkontrollgränssnittet har nu aktiverats på SmartgridOne Controller.

Vi är nu redo att skicka några grundläggande kommandon med hjälp av ett enkelt exempel. Statuskolumnen visar om något kommando är aktivt.

Python demo-skript

En bra första startpunkt skulle vara att testa din nyinställda integration med ett enkelt exempel.

Denna testkod gör ett enkelt jobb med att kontinuerligt skicka följande schema:

  • Batteri: Ladda med 5 kW i 15 minuter om 10 minuter
  • Sol: Ställ in effekten på 0 kW i 30 minuter

SmartgridOne Controller svarar med ett bekräftelsemeddelande som innehåller det unika schemasidentifierare, eller ett felmeddelande.

Vi hämtar sedan nästa schema för båda enhetstyperna och bekräftar att kommandot var framgångsrikt.

Vänligen ladda ner filen nedan i din föredragna Python IDE. Fyll i ditt serienummer och MQTT-uppgifter och kör skriptet:

När ovanstående är framgångsrikt kan du fortsätta med att skicka andra typer av meddelanden. Alla meddelanden beskrivs nedan.

MQTT-dokumentation för att skicka kommandon

Denna sektion beskriver MQTT-meddelandets format och nyttolastkrav för att ställa in schemalagd kontroll av enheter inom SmartgridOne Controllers nätverk.

MQTT-ämnen

  • Prenumerera på ämnet: standard1/rp_one_s/remoteScheduleMetrics/<controller SN>
  • Feedbackämne: standard1/outbound/remoteScheduleMetrics/feedback/<controller SN>

Där <controller SN> ska ersättas med det faktiska serienumret för den SmartgridOne Controller som du avser att kontrollera.

MQTT-meddelande typer

1. Ställ in schema (set_schedule)

Skapar ett nytt schema för en enhetstyp.

{
"extraTags": {
"nodeId": "<Controller SN>_site_0"
},
"time": <Unix Tidsstämpel>,
"message_type": "set_schedule",
"fields": {
"device_type": "<Enhetstyp>",
"node_id": "<Nod-ID>" (Valfritt),
"start_time": <Unix Tidsstämpel>,
"end_time": <Unix Tidsstämpel>,
"policy": "<Policy>",
"power_setpoint_w": <Inställning i watt>,
"replace_overlap": <True/False> (Valfritt) (standard=False),
}
}

Svar (Lyckad):

{
"requestTime": <Unix Tidsstämpel>,
"time": <Unix Tidsstämpel>,
"siteNodeId": "<Controller SN>_site_0",
"data": {
"message_type": "set_schedule_ack",
"state": {
"schedule_id": <Schema-ID>,
"deleted_ids": <Schemalagda ID:n som raderades om replace_overlap=True>
},
"responseCode": 0
}
}

2. Hämta schema (get_schedule)

Hämtar ett specifikt schema med ID.

{
"extraTags": {
"nodeId": "<Controller SN>_site_0"
},
"time": <Unix Tidsstämpel>,
"message_type": "get_schedule",
"fields": {
"id": <Schema-ID>
}
}

Svar:

{
"requestTime": <Unix Tidsstämpel>,
"time": <Unix Tidsstämpel>,
"siteNodeId": "<Controller SN>_site_0",
"data": {
"message_type": "get_schedule_ack",
"state": <Schema>,
"responseCode": 0
}
}

3. Hämta aktivt schema (get_active_schedule)

Hämtar det för närvarande aktiva schemat för en enhetstyp.

{
"extraTags": {
"nodeId": "<Controller SN>_site_0"
},
"time": <Unix Tidsstämpel>,
"message_type": "get_active_schedule",
"fields": {
"device_type": "<Enhetstyp>",
"node_id": "<Nod-ID>" (Valfritt),
}
}

Svar (Lyckad):

{
"requestTime": <Unix Tidsstämpel>,
"time": <Unix Tidsstämpel>,
"siteNodeId": "<Controller SN>_site_0",
"data": {
"message_type": "get_active_schedule_ack",
"state": <Schema>,
"responseCode": 0
}
}

4. Hämta nästa schema (get_next_schedule)

Hämtar nästa kommande schema för en enhetstyp.

{
"extraTags": {
"nodeId": "<Controller SN>_site_0"
},
"time": <Unix Tidsstämpel>,
"message_type": "get_next_schedule",
"fields": {
"device_type": "<Enhetstyp>",
"node_id": "<Nod-ID>" (Valfritt),
}
}

Svar (Lyckad):

{
"requestTime": <Unix Tidsstämpel>,
"time": <Unix Tidsstämpel>,
"siteNodeId": "<Controller SN>_site_0",
"data": {
"message_type": "get_next_schedule_ack",
"state": <Schema>,
"responseCode": 0
}
}

5. Hämta scheman (get_schedules)

Hämtar alla scheman för ett specifikt datum.

{
"extraTags": {
"nodeId": "<Controller SN>_site_0"
},
"time": <Unix Tidsstämpel>,
"message_type": "get_schedules",
"fields": {
"date": "<Datumsträng i formatet dd/mm/yyyy>"
}
}

Response (Success):

{
"requestTime": <Unix Timestamp>,
"time": <Unix Timestamp>,
"siteNodeId": "<Controller SN>_site_0",
"data": {
"message_type": "get_schedules_ack",
"state": {
"schedules": [<Schedule>, ...]
},
"responseCode": 0
}
}

6. Hämta Framtida Scheman (get_future_schedules)

Hämtar alla framtida scheman.

{
"extraTags": {
"nodeId": "<Controller SN>_site_0"
},
"time": <Unix Timestamp>,
"message_type": "get_future_schedules",
"fields": {}
}

Response (Success):

{
"requestTime": <Unix Timestamp>,
"time": <Unix Timestamp>,
"siteNodeId": "<Controller SN>_site_0",
"data": {
"message_type": "get_future_schedules_ack",
"state": {
"schedules": [<Schedule>, ...]
},
"responseCode": 0
}
}

7. Ta Bort Schema (remove_schedule)

Tar bort ett specifikt schema med ID.

{
"extraTags": {
"nodeId": "<Controller SN>_site_0"
},
"time": <Unix Timestamp>,
"message_type": "remove_schedule",
"fields": {
"id": <Schedule ID>
}
}

Response (Success):

{
"requestTime": <Unix Timestamp>,
"time": <Unix Timestamp>,
"siteNodeId": "<Controller SN>_site_0",
"data": {
"message_type": "remove_schedule_ack",
"state": "Schema <Schedule ID> borttaget framgångsrikt",
"responseCode": 0
}
}

8. Hämta Webbplatsens Feedback (get_feedback)

Hämtar detaljerad feedback om systemets tillstånd.

{
"extraTags": {
"nodeId": "<Controller SN>_site_0"
},
"time": <Unix Timestamp>,
"message_type": "get_feedback",
"fields": {}
}

Response (Success):

Feedback Payload Structure

Standard Schema Svarsformat

{
"id": <Schedule ID>,
"device_type": "<Device Type>",
"node_id": "<Node ID>" (Valfritt),
"start_time": <Unix Timestamp>,
"end_time": <Unix Timestamp>,
"policy": "<Schedule Policy>",
"power_setpoint_w": <Setpoint in watts>,
"created_at": <Unix Timestamp>
}

Komponenttyper och Policys

För detaljer om tillgängliga komponenter och policies som kan schemaläggas, se MQTT Komponenter och Policies avsnittet i Live MQTT Kontroll dokumentationen.

Enhetsspecifika scheman kan skickas med det valfria node_id fältet, vilket refererar till nod-ID:n för den kontrollerbara enheten.

Felhantering

Alla meddelanden kan returnera ett fel-svar med responseCode: 1 när ett fel uppstår:

{
"requestTime": <Unix Timestamp>,
"time": <Unix Timestamp>,
"siteNodeId": "<Controller SN>_site_0",
"data": {
"message_type": "<Message Type>_ack",
"error": <Error Body>,
"responseCode": 1
}
}

När ett orelaterat fel uppstår kommer meddelandets typ att vara (general_error).

Vanliga fel inkluderar:

  • Schemaöverlappning med befintliga scheman
  • Ogiltigt tidsintervall
  • Enhetstyp hittades inte
  • Schema-ID hittades inte
  • Ogiltig policy för enhetstyp

Regler för Schemahantering

  1. Överlappningsregler
    • Scheman får inte överlappa för samma enhetstyp
    • Scheman får inte överlappa för samma enhet
    • Scheman för samma enhet och enhetstyp får inte överlappa
    • Befintliga, överlappande scheman kommer att raderas om variabeln replace_overlap är inställd på True när ett nytt schema skapas.
  2. Varje schema måste ha:
    • En giltig enhetstyp
    • En starttid (Unix-tidsstämpel)
    • En sluttid (Unix-tidsstämpel)
    • En policy (som matchar tillgängliga policies för enhetstypen)
    • En effektinställning (för policies som kräver det)
  3. Starttiden måste vara före sluttiden
  4. Starttiden måste vara minst fem minuter in i framtiden
  5. Scheman kan endast tas bort om de börjar minst fem minuter in i framtiden
  6. Scheman kan ställas in för olika enhetstyper oberoende av varandra
  7. Systemet tillämpar automatiskt den lämpliga policyn när ett schema blir aktivt